import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;

/**
 * 
 */

/**对字符串进行分类
 * 交换多次字符，可以相等，则这两个字符串是一类
 * 第一直觉，很简单，只要这两个字符串拥有的长度和字符是一样的即可。
 * JDK1.7不能用lamda表达式，hashmap的merge和replace都不能用
 * @author zhongfang
 *
 */
public class ClassifyString {
	

	public int addOne(int oldVal) {
		return oldVal+1;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int count=Integer.parseInt(in.nextLine());
		int classNum=0;//类别个数
		ArrayList<HashMap<Character, Integer>> totalClass=new ArrayList<>();
		for (int i = 0; i < count; i++) {
			String string=in.nextLine();
//			ClassifyString classifyString=new ClassifyString();
			HashMap<Character, Integer> frequncy=new HashMap<>(string.length());//一个字符串的词频
			//对这个字符串统计词频
			char[] strChars=string.toCharArray();
			for (int j = 0; j < string.length(); j++) {
				if(frequncy.containsKey(strChars[j])){
					int newVal=frequncy.get(strChars[j]);
					frequncy.put(strChars[j], newVal);
				}else {
					frequncy.put(strChars[j], 1);
				}
//				frequncy.merge(strChars[j], 1, (oldVal,newVal)->classifyString.addOne(oldVal));
			}
			//如果这一类的char及其词频都和现有的想同，则类别个数不增加。
			boolean isExist=false;
			for (HashMap<Character, Integer> alreadyExistFrequency : totalClass) {
				boolean isSame=true;//alreadyExistFrequency和当前输入的是否相等
				if(alreadyExistFrequency.size()!=frequncy.size()){
					isSame=false;
					continue;//去对比下一个类别
				}
				for (Entry<Character, Integer> entry : alreadyExistFrequency.entrySet()) {//只要有一个char或者词频不想等，则这个类别不可能和现在的相同，去对比下一个类别。
					if(!frequncy.containsKey(entry.getKey())||frequncy.get(entry.getKey())!=entry.getValue()){
						isSame=false;
						break;
					}
				}
				if(isSame){//如果有相等的
					isExist=true;
					break;//一旦存在相同的，则可以退出对比	
				}
			}
			if(!isExist){
				classNum++;
				totalClass.add(frequncy);
			}
				
		}
		System.out.println(classNum);	
	}

}
